3116797f743a54f3ce9121aa82ab669faf0b27ad,org.metaborg.spoofax.core/src/main/java/org/metaborg/spoofax/core/analysis/constraint/ConstraintSingleFileAnalyzer.java,ConstraintSingleFileAnalyzer,analyzeAll,#Map#Map#ISingleFileScopeGraphContext#HybridInterpreter#String#,72

Before Change


                        merge(solution.getErrors(),
                                customSolution.map(cs -> cs.getErrors()).orElse(Lists.newArrayList())),
                        MessageSeverity.ERROR);
                final Collection<IMessage> warnings = messages(parseUnit.source(),
                        merge(solution.getWarnings(),
                                customSolution.map(cs -> cs.getWarnings()).orElse(Lists.newArrayList())),
                        MessageSeverity.WARNING);
                final Collection<IMessage> notes = messages(parseUnit.source(),
                        merge(solution.getNotes(),
                                customSolution.map(cs -> cs.getNotes()).orElse(Lists.newArrayList())),

After Change


                    Iterables.concat(initialResult.getConstraints(), unitResult.getConstraints());
                Function2<String, String, String> fresh =
                    (resource, base) -> context.unit(resource).fresh().fresh(base);
                Solution solution = Solver.solve(initialResult.getConfig(), fresh, constraints);
                unit.setSolution(solution);

                // final
                ITerm finalResultTerm = doAction(strategy, Actions.analyzeFinal(source), context, runtime)
                    .orElseThrow(() -> new AnalysisException(context, "No final result."));
                FinalResult finalResult = FinalResult.matcher().match(finalResultTerm)
                    .orElseThrow(() -> new MetaborgException("Invalid final results."));
                Optional<ITerm> customFinal = doCustomAction(strategy,
                    Actions.customFinal(source, customInitial.orElse(GenericTerms.EMPTY_TUPLE),
                        customUnit.map(cu -> GenericTerms.newList(cu)).orElse(GenericTerms.EMPTY_LIST)),
                    context, runtime);
                finalResult = ImmutableFinalResult.of().setCustomResult(customFinal);
                unit.setFinalResult(finalResult);

                Optional<CustomSolution> customSolution = customFinal.flatMap(CustomSolution.matcher()::match);
                customSolution.ifPresent(cs -> unit.setCustomSolution(cs));

                // errors
                final Collection<IMessage> errors =
                    merge(messages(solution, MessageKind.ERROR, MessageSeverity.ERROR), customSolution
                        .map(cs -> messages(cs.getErrors(), MessageSeverity.ERROR)).orElse(Lists.newArrayList()));
                final Collection<IMessage> warnings =
                    merge(messages(solution, MessageKind.WARNING, MessageSeverity.WARNING), customSolution
                        .map(cs -> messages(cs.getErrors(), MessageSeverity.WARNING)).orElse(Lists.newArrayList()));
                final Collection<IMessage> notes =
                    merge(messages(solution, MessageKind.NOTE, MessageSeverity.NOTE), customSolution
                        .map(cs -> messages(cs.getErrors(), MessageSeverity.NOTE)).orElse(Lists.newArrayList()));